1. Field of the Invention
This invention relates to computer systems and, more particularly, to high availability and scalability of applications operating within clustered computer systems.
2. Description of the Related Art
Enterprises have become increasingly dependent on information technology applications for the success of their businesses. It has become critical for these applications to be available to employees, partners, and/or customers around the clock. In addition, it is desirable for these applications to scale to large numbers of users. Consequently, various strategies have been employed to increase the availability and scalability of applications. One strategy has been to deploy applications on multiple host computers. For example, each computer that hosts an application may be configured with one or more redundant failover computers to take its place in the event of a failure. Another strategy is to deploy applications that are distributed on a group of hosts, commonly referred to as a computer cluster. Computer clusters use multiple computers interconnected by a network to provide the services of a single larger computer. The individual hosts in a computer cluster may share the application's load and serve as failover hosts in the event any of the hosts fails or becomes overloaded.
In order to increase the effectiveness of the above strategies, it is desirable for failover hosts and cluster members to be configured such that there are as few single points of failure as possible among the members. For example, if two hosts share a power supply, a network connection, or some other critical resource, they are not good candidates to be primary and secondary hosts in a failover pairing. More generally, it may be desirable to configure applications among hosts that are separated geographically as much as possible. Geographic separation may include placing hosts in different enclosures, rooms in a building, different buildings, different cities, etc. to avoid single points of failure.
Unfortunately, in many distributed applications, hosts may be identified by a network address such as an IP address that conveys little, if any, geographic information. In addition, applications may be deployed in a virtualized environment in which hosts are arranged in computer clusters. Re-assignments lead to dynamic changes in the physical locations of hosts as the virtualization system performs load balancing and other tasks. Determination of the physical location of a host may be complicated by the above factors.
In view of the above, an effective system and method for assigning hosts to applications that results in high availability and scalability of the applications that accounts for these issues are desired.